perm filename WIX2SB.FAI[VIS,HPM]2 blob sn#144765 filedate 1975-02-10 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE	WIX2SB
C00007 ENDMK
C⊗;
	TITLE	WIX2SB

;FULLY FORMAT 2 ORIENTED PICTURE ROUTINES. EXTENSIONS TO THE CONVERTED
;FORMAT 1 ROUTINES IN WIXSUB
	
	ENTRY	HAFPIC,COPPIC
	
	PCLN←←0
	PCWD←←1
	PCBY←←2
	PCBYA←←3
	LNWD←←4
	LNBY←←5
	LNBYA←←6
	WDBY←←7
	WDBI←←10
	BYBI←←11
	BPTAB←←12
	LINTAB←←13

	T←1  ↔  TT←2  ↔  TTT←3  ↔  ARRY1←4  ↔  ARRY2←5  ↔  P←17
	A←6  ↔  B←7  ↔  C←10  ↔  D←11  ↔  E←13  ↔  F←14  ↔  G←15


RETAD:	0

AR2TAB:	MOVEI	T,44			;TOTAL BITS/WORD
	IDIV	T,BYBI(ARRY2)		;BYTE SIZE
	MOVEM	T,WDBY(ARRY2)		;BYTES PER WORD
	SUBI	TT,44			;-NUMBER OF USED BITS/WORD
	MOVNM	TT,WDBI(ARRY2)		;SAVED
	ADD	T,LNBY(ARRY2)
	SUBI	T,1
	IDIV	T,WDBY(ARRY2)		;NUMBER OF WORDS/SCANLINE
	MOVEM	T,LNWD(ARRY2)
	MOVE	TT,T	 		;WORDS/LINE
	IMUL	TT,WDBY(ARRY2)		;BYTES/WORD
	MOVEM	TT,LNBYA(ARRY2)		;GIVES BYTES/LINE, INCLUDING NULLS
	IMUL	TT,PCLN(ARRY2)
	MOVEM	TT,PCBYA(ARRY2)		;TOTAL BYTES/PIC, INCL. NULLS
	IMUL	T,PCLN(ARRY2)		;LINES IN THE PICTURE
	MOVEM	T,PCWD(ARRY2)		;WORDS IN THE PICTURE
	MOVE	T,LNBY(ARRY2)
	IMUL	T,PCLN(ARRY2)
	MOVEM	T,PCBY(ARRY2)		;BYTES/PIC, NOT INCL. NULLS
	MOVEI	T,14(ARRY2)
	ADD	T,PCLN(ARRY2)
	MOVEM	T,BPTAB(ARRY2)		;ADDRESS OF BYTE POINTER TABLE
	ADD	T,LNBYA(ARRY2)		;ADDR OF FIRST WORD IN PICTURE
	MOVN	TT,PCLN(ARRY2)		;SET UP CNTR FOR LINE ADDRESSES
	HRL	TT,TT
	HRRI	TT,LINTAB(ARRY2)
LTLP:	MOVEM	T,(TT)			;MAKE LINE TABLE
	ADD	T,LNWD(ARRY2)
	AOBJN	TT,LTLP
	MOVN	TT,BPTAB(ARRY2)
	HRL	TT,LNBYA(ARRY2)		;SET UP CNTR FOR BYTE TABLE
	AOBJN	TT,			;DECR ADDRESS AND INCR COUNT BY 1
	MOVN	TT,TT
	MOVEI	T,4400
	ADD	T,BYBI(ARRY2)
	LSH	T,6
	HRLZ	T,T
BYLP:	MOVEM	T,(TT)			;MAKE BYTE POINTER TABLE
	IBP	T
	AOBJN	TT,BYLP
	POPJ	P,





HAFPIC:	POP	P,RETAD
	POP	P,ARRY2			;MAKES A HALFSIZE VERSION
	POP	P,ARRY1			;OF A PICTURE
	MOVE	T,LNBY(ARRY1)		;HAFPIC(PICIN,PICOUT);
	ASH	T,-1			;NEW PIC IS HALF THE WIDTH
	MOVEM	T,LNBY(ARRY2)
	MOVE	T,PCLN(ARRY1)
	ASH	T,-1			;AND HALF THE HEIGHT
	MOVEM	T,PCLN(ARRY2)
	MOVE	T,BYBI(ARRY1)
	ADDI	T,2			;AND HAS TWO MORE BITS/PIXEL
	MOVEM	T,BYBI(ARRY2)
	PUSHJ	P,AR2TAB		;SET UP ITS SKELETON
	MOVE	A,BPTAB(ARRY1)
	MOVE	A,-1(A)			;FIRST BYTE PNTR FOR ARRY1
	ADD	A,LINTAB(ARRY1)
	MOVE	B,BPTAB(ARRY2)
	MOVE	B,-1(B)			;AND FIRST BP FOR ARRY2
	ADD	B,LINTAB(ARRY2)
	MOVE	F,PCLN(ARRY2)		;NO OF LINES, FOR COUNT
LNLP:	MOVE	TTT,LNBY(ARRY2)		;NO OF BYTES, INNER LOOP CNTR
	MOVE	C,A
	ADD	A,LNWD(ARRY1)		;BP S FOR ARRY1
	MOVE	D,A
	ADD	A,LNWD(ARRY1)
	MOVE	E,B			;BP FOR ARRY2
	ADD	B,LNWD(ARRY2)
CLLP:	ILDB	T,C			;FETCH FOUR BYTES AND ADD THEM
	ILDB	TT,C
	ADD	T,TT
	ILDB	TT,D
	ADD	T,TT
	ILDB	TT,D
	ADD	T,TT
	IDPB	T,E			;THEN DEPOSIT SUM
	SOJG	TTT,CLLP
	SOJG	F,LNLP
	JRST	@RETAD

COPPIC:	POP	P,RETAD			;COPIES A PICTURE IN PIC1
	POP	P,ARRY2			;INTO PIC2 (THE LINE TABLE MUST
	POP	P,ARRY1			;BE ADJUSTED TO DO THIS)
	HRLZ	T,ARRY1			;  COPPIC(PIC1,PIC2)
	HRR	T,ARRY2
	MOVEI	TT,13(ARRY2)
	ADD	TT,PCLN(ARRY1)
	ADD	TT,LNBYA(ARRY1)
	ADD	TT,PCWD(ARRY1)
	BLT	T,(TT)
	MOVE	T,ARRY2
	SUB	T,ARRY1
	MOVN	TT,PCLN(ARRY1)
	SUBI	TT,1
	HRLZ	TT,TT
	HRRI	TT,BPTAB(ARRY2)
COPLP:	ADDM	T,(TT)
	AOBJN	TT,COPLP
	JRST	@RETAD

	END